• Jump To … +
    zoo_frontend/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js zoo_frontend/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.js zoo_frontend/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.min.js zoo_frontend/node_modules/hoist-non-react-statics/src/index.js zoo_frontend/pages/_app.jsx zoo_frontend/pages/_document.jsx zoo_frontend/pages/admin/delivery-containers/index.js zoo_frontend/pages/admin/department/index.js zoo_frontend/pages/admin/group-diets/index.js zoo_frontend/pages/admin/species/index.js zoo_frontend/pages/admin/user/index.js zoo_frontend/pages/diet/edit.js zoo_frontend/pages/diet/index.js zoo_frontend/pages/diet/new.js zoo_frontend/pages/food/dataSrc.js zoo_frontend/pages/food/edit.js zoo_frontend/pages/food/index.js zoo_frontend/pages/food/new.js zoo_frontend/pages/food/nicknames.js zoo_frontend/pages/food/nutrDef.js zoo_frontend/pages/food/units.js zoo_frontend/pages/home/index.js zoo_frontend/pages/index.jsx zoo_frontend/pages/kitchen/index.js zoo_frontend/pages/kitchen/prep/index.js zoo_frontend/pages/login/index.js zoo_frontend/pages/nutritionist/index.js zoo_frontend/pages/print/bin-label.js zoo_frontend/pages/print/index.js zoo_frontend/pages/print/labels.js zoo_frontend/pages/print/prep-sheet.js zoo_frontend/pages/profile/index.js zoo_frontend/pages/reports/cost-by-gl-code.js zoo_frontend/pages/reports/dept-cards.js zoo_frontend/pages/reports/dept-keeper-cards.js zoo_frontend/pages/reports/feeding-cost.js zoo_frontend/pages/reports/index.js zoo_frontend/pages/reports/prep-cards-table.js zoo_frontend/src/api/Animals.js zoo_frontend/src/api/Api.js zoo_frontend/src/api/BudgetIds.js zoo_frontend/src/api/CaseNotes.js zoo_frontend/src/api/DataSrc.js zoo_frontend/src/api/DeliveryContainers.js zoo_frontend/src/api/Departments.js zoo_frontend/src/api/DietChanges.js zoo_frontend/src/api/DietHistory.js zoo_frontend/src/api/DietPlans.js zoo_frontend/src/api/Diets.js zoo_frontend/src/api/Food.js zoo_frontend/src/api/FoodCategories.js zoo_frontend/src/api/FoodPrepTables.js zoo_frontend/src/api/FoodWeights.js zoo_frontend/src/api/LifeStages.js zoo_frontend/src/api/Locations.js zoo_frontend/src/api/NutData.js zoo_frontend/src/api/NutrDef.js zoo_frontend/src/api/PrepNotes.js zoo_frontend/src/api/RoleMappings.js zoo_frontend/src/api/Roles.js zoo_frontend/src/api/Species.js zoo_frontend/src/api/Subenclosures.js zoo_frontend/src/api/Units.js zoo_frontend/src/api/Users.js zoo_frontend/src/api/index.js zoo_frontend/src/components/ConfirmationDialog.jsx zoo_frontend/src/components/ErrorPage.jsx zoo_frontend/src/components/FormCheckbox.jsx zoo_frontend/src/components/Header.jsx zoo_frontend/src/components/KitchenView.jsx zoo_frontend/src/components/Notifications.jsx zoo_frontend/src/components/PrintPrepSheets/PrepSheetPrintOut.jsx zoo_frontend/src/components/PrintPrepSheets/PrintPrepSheets.jsx zoo_frontend/src/components/PrintPrepSheets/index.js zoo_frontend/src/components/ReactSingleSelect.jsx zoo_frontend/src/components/SidebarDrawer.jsx zoo_frontend/src/components/VirtualTable.jsx zoo_frontend/src/components/index.js zoo_frontend/src/getPageContext.js zoo_frontend/src/pages/PageAccess.js zoo_frontend/src/pages/admin/deliveryContainers/deliveryContainers.jsx zoo_frontend/src/pages/admin/deliveryContainers/deliveryContainers.styles.js zoo_frontend/src/pages/admin/deliveryContainers/index.js zoo_frontend/src/pages/admin/department/department.jsx zoo_frontend/src/pages/admin/department/department.styles.js zoo_frontend/src/pages/admin/department/index.js zoo_frontend/src/pages/admin/groupDiets/groupDiets.jsx zoo_frontend/src/pages/admin/groupDiets/groupDiets.styles.js zoo_frontend/src/pages/admin/groupDiets/index.js zoo_frontend/src/pages/admin/species/index.js zoo_frontend/src/pages/admin/species/species.jsx zoo_frontend/src/pages/admin/species/species.styles.js zoo_frontend/src/pages/admin/user/index.js zoo_frontend/src/pages/admin/user/user.jsx zoo_frontend/src/pages/admin/user/user.styles.js zoo_frontend/src/pages/diet/CaseNotesForm.jsx zoo_frontend/src/pages/diet/CurrentDiet.jsx zoo_frontend/src/pages/diet/DietChangeCard.jsx zoo_frontend/src/pages/diet/DietHistory.jsx zoo_frontend/src/pages/diet/DietPlanChangeDialog.jsx zoo_frontend/src/pages/diet/DietSelectDialog.jsx zoo_frontend/src/pages/diet/diet.jsx zoo_frontend/src/pages/diet/diet.styles.js zoo_frontend/src/pages/diet/dietForm.jsx zoo_frontend/src/pages/diet/dietHistoryList.jsx zoo_frontend/src/pages/diet/edit/edit.jsx zoo_frontend/src/pages/diet/edit/edit.styles.js zoo_frontend/src/pages/diet/edit/index.js zoo_frontend/src/pages/diet/index.js zoo_frontend/src/pages/diet/new/index.js zoo_frontend/src/pages/diet/new/new.jsx zoo_frontend/src/pages/diet/new/new.styles.js zoo_frontend/src/pages/diet/prepNotesForm.jsx zoo_frontend/src/pages/food/dataSrc/dataSrc.jsx zoo_frontend/src/pages/food/dataSrc/dataSrc.styles.js zoo_frontend/src/pages/food/dataSrc/index.js zoo_frontend/src/pages/food/edit/FoodWeightTable.jsx zoo_frontend/src/pages/food/edit/edit.jsx zoo_frontend/src/pages/food/edit/edit.styles.js zoo_frontend/src/pages/food/edit/index.js zoo_frontend/src/pages/food/food.jsx zoo_frontend/src/pages/food/food.styles.js zoo_frontend/src/pages/food/foodForm.jsx zoo_frontend/src/pages/food/index.js zoo_frontend/src/pages/food/new/index.js zoo_frontend/src/pages/food/new/new.jsx zoo_frontend/src/pages/food/new/new.styles.js zoo_frontend/src/pages/food/nicknames/index.js zoo_frontend/src/pages/food/nicknames/nicknames.jsx zoo_frontend/src/pages/food/nicknames/nicknames.styles.js zoo_frontend/src/pages/food/nutrDef/index.js zoo_frontend/src/pages/food/nutrDef/nutrDef.jsx zoo_frontend/src/pages/food/nutrDef/nutrDef.styles.js zoo_frontend/src/pages/food/units/index.js zoo_frontend/src/pages/food/units/units.jsx zoo_frontend/src/pages/food/units/units.styles.js zoo_frontend/src/pages/home/home.jsx zoo_frontend/src/pages/home/home.styles.js zoo_frontend/src/pages/home/index.js zoo_frontend/src/pages/kitchen/index.js zoo_frontend/src/pages/kitchen/kitchenHome.jsx zoo_frontend/src/pages/kitchen/kitchenHome.styles.js zoo_frontend/src/pages/kitchen/prep/index.js zoo_frontend/src/pages/kitchen/prep/kitchen.jsx zoo_frontend/src/pages/kitchen/prep/kitchen.styles.js zoo_frontend/src/pages/login/index.js zoo_frontend/src/pages/login/login.jsx zoo_frontend/src/pages/login/login.styles.js zoo_frontend/src/pages/nutritionist/admin.jsx zoo_frontend/src/pages/nutritionist/admin.styles.js zoo_frontend/src/pages/nutritionist/index.js zoo_frontend/src/pages/print/admin.jsx zoo_frontend/src/pages/print/admin.styles.js zoo_frontend/src/pages/print/bin-label/admin.jsx zoo_frontend/src/pages/print/bin-label/admin.styles.js zoo_frontend/src/pages/print/bin-label/index.js zoo_frontend/src/pages/print/index.js zoo_frontend/src/pages/print/labels/admin.jsx zoo_frontend/src/pages/print/labels/admin.styles.js zoo_frontend/src/pages/print/labels/index.js zoo_frontend/src/pages/print/prep-sheet/admin.jsx zoo_frontend/src/pages/print/prep-sheet/admin.styles.js zoo_frontend/src/pages/print/prep-sheet/index.js zoo_frontend/src/pages/profile/index.js zoo_frontend/src/pages/profile/profile.jsx zoo_frontend/src/pages/profile/profile.styles.js zoo_frontend/src/pages/reports/admin.jsx zoo_frontend/src/pages/reports/admin.styles.js zoo_frontend/src/pages/reports/cost-by-gl-code/admin.jsx zoo_frontend/src/pages/reports/cost-by-gl-code/admin.styles.js zoo_frontend/src/pages/reports/cost-by-gl-code/index.js zoo_frontend/src/pages/reports/dept-cards/admin.jsx zoo_frontend/src/pages/reports/dept-cards/admin.styles.js zoo_frontend/src/pages/reports/dept-cards/index.js zoo_frontend/src/pages/reports/dept-keeper-cards/admin.jsx zoo_frontend/src/pages/reports/dept-keeper-cards/admin.styles.js zoo_frontend/src/pages/reports/dept-keeper-cards/index.js zoo_frontend/src/pages/reports/feeding-cost/admin.jsx zoo_frontend/src/pages/reports/feeding-cost/admin.styles.js zoo_frontend/src/pages/reports/feeding-cost/index.js zoo_frontend/src/pages/reports/index.js zoo_frontend/src/pages/reports/prep-cards-table/admin.jsx zoo_frontend/src/pages/reports/prep-cards-table/admin.styles.js zoo_frontend/src/pages/reports/prep-cards-table/index.js zoo_frontend/src/static/LocalStorage.js zoo_frontend/src/static/Roles.js zoo_frontend/src/util/AuthProvider.jsx zoo_frontend/src/util/PageLayout.jsx zoo_frontend/src/util/TableColumnHelper.js zoo_frontend/src/util/WithPropsChecker.jsx zoo_frontend/src/util/camelToNorm.js zoo_frontend/src/util/withAuth.jsx
  • nutrDef.jsx

  • ¶
    import React, { Component } from 'react';
    import PropTypes from 'prop-types';
    import MaterialTable from 'material-table';
    
    import Notifications from '../../../components/Notifications';
    import ErrorPage from '../../../components/ErrorPage';
    
    import NutrDefApi from '../../../api/NutrDef';
    
    class Home extends Component {
      /**
       * Server side data retrieval
       */
      static async getInitialProps({ authToken }) {
        const api = new NutrDefApi(authToken);
        try {
          const res = await api.getNutrDef().catch((err) => ({ data: [{ err: true, msg: err }] }));
          return { nutrDef: res.data };
        } catch (err) {
          return {
            nutrDef: [],
            error: true,
            errorMessage: 'Error loading data',
          };
        }
      }
      static propTypes = {
  • ¶

    account: PropTypes.object.isRequired,

        token: PropTypes.string,
        classes: PropTypes.object.isRequired,
        nutrDef: PropTypes.array.isRequired,
        error: PropTypes.bool,
        errorMessage: PropTypes.string,
      };
    
      static defaultProps = {
        token: '',
        error: false,
        errorMessage: '',
      }
    
      constructor(props) {
        super(props);
        this.state = {
          nutrDef: props.nutrDef,
        };
        this.notificationsRef = React.createRef();
      }
    
      onRowAdd = (newData) => new Promise(async (resolve, reject) => {
        const nutrDefApi = new NutrDefApi(this.props.token);
  • ¶

    Reject if no short form

        if (!newData.tagname || !newData.units || !newData.nutrDesc || !newData.srOrder) {
          this.notificationsRef.current.showNotification('error', 'Please fill out "Tag Name", "Units", "Description", "SR Order".');
          reject();
          return;
        }
    
        try {
  • ¶

    Create the nutrDef entry

          await nutrDefApi.createNutrDef(newData);
        } catch (err) {
          reject();
        }
  • ¶

    Refresh Data

        try {
          const nutrDefRes = await nutrDefApi.getNutrDef();
          this.setState({ nutrDef: nutrDefRes.data });
          resolve();
        } catch (err) {
          reject();
          return;
        }
        resolve();
      })
    
      onRowUpdate = (newData, oldData) => new Promise(async (resolve, reject) => {
        const nutrDefApi = new NutrDefApi(this.props.token);
  • ¶

    Determine if we need to update and what to update

        let fieldUpdated = false;
        const updatedFields = {};
    
        if (newData.units !== oldData.units) {
          fieldUpdated = true;
          updatedFields.units = newData.units;
        }
    
        if (newData.tagname !== oldData.tagname) {
          fieldUpdated = true;
          updatedFields.tagname = newData.tagname;
        }
    
        if (newData.nutrDesc !== oldData.nutrDesc) {
          fieldUpdated = true;
          updatedFields.nutrDesc = newData.nutrDesc;
        }
    
        if (newData.numDec !== oldData.numDec) {
          fieldUpdated = true;
          updatedFields.numDec = newData.numDec;
        }
    
        if (newData.srOrder !== oldData.srOrder) {
          fieldUpdated = true;
          updatedFields.srOrder = newData.srOrder;
        }
    
        if (newData.bgtName !== oldData.bgtName) {
          fieldUpdated = true;
          updatedFields.bgtName = newData.bgtName;
        }
    
        if (fieldUpdated) {
          await nutrDefApi.updateNutrDef(newData.nutrNo, updatedFields);
        } else {
          reject();
          return;
        }
  • ¶

    Refresh Data

        try {
          const nutrDefRes = await nutrDefApi.getNutrDef();
          this.setState({ nutrDef: nutrDefRes.data });
          resolve();
        } catch (err) {
          reject();
          return;
        }
        resolve();
      })
    
      onRowDelete = (oldData) => new Promise(async (resolve, reject) => {
        const nutrDefApi = new NutrDefApi(this.props.token);
        try {
  • ¶

    Delete the nutrDef

          await nutrDefApi.deleteNutrDef(oldData.nutrNo);
        } catch (err) {
          reject();
          return;
        }
  • ¶

    Refresh Data

        try {
          const nutrDefRes = await nutrDefApi.getNutrDef();
          this.setState({ nutrDef: nutrDefRes.data });
          resolve();
        } catch (err) {
          reject();
          return;
        }
        resolve();
      })
    
      render() {
        if (this.props.error) {
          return (<ErrorPage message={this.props.errorMessage} />);
        }
        return (
          <div
            style={{
              display: 'flex',
              flexDirection: 'column',
              justifyContent: 'center',
            }}
          >
            <Notifications ref={this.notificationsRef} />
            <div className={this.props.classes.table}>
              <MaterialTable
                options={{
                  pageSize: 10,
                  pageSizeOptions: [10, 50, 200],
                  exportButton: true,
                  addRowPosition: 'first',
                  emptyRowsWhenPaging: false,
                }}
                columns={[
                  { title: 'Tag Name', field: 'tagname' },
                  { title: 'Description', field: 'nutrDesc' },
                  { title: 'Units', field: 'units' },
  • ¶

    eslint-disable-next-line object-curly-newline

                  { title: 'Num Desc', field: 'numDec', lookup: { 0: 0, 1: 1, 2: 2, 3: 3 } },
                  { title: 'SR Order', field: 'srOrder' },
                  { title: 'Bgt. Name', field: 'bgtName' },
    
    
                ]}
                editable={{
                  onRowAdd: this.onRowAdd,
                  onRowUpdate: this.onRowUpdate,
                  onRowDelete: this.onRowDelete,
                }}
                data={this.state.nutrDef}
                title="Nutrition Definitions"
              />
            </div>
          </div>
        );
      }
    }
    
    export default Home;